草庐IT

C++ lambda 捕获约束

全部标签

c# - 为通用参数指定构造函数约束

这个问题在这里已经有了答案:IsthereagenericconstructorwithparameterconstraintinC#?(8个答案)关闭9年前。我有一组对象,我将其作为参数传递以创建另一种类型的对象(一对一)。我在很多地方都这样做(基本上是从数据对象转换为业务对象)。我想写一个通用的扩展方法来完成这个。但是我被卡住了,因为我不知道如何指定业务对象具有将数据对象作为参数的构造函数的约束。以下是我的函数代码:publicstaticIListConvertTo(thisIEnumerablelist)whereT:new(A)/*THISISPROBLEMPART*/{va

c# - 在 Entity Framework 中使用唯一约束交换值

我对Navigations表的名为Index的列有唯一约束。我有两个Navigation实体,我想交换它们的Index值。当我调用db.SaveChanges时,它会抛出一个异常,表明违反了唯一约束。似乎EF正在更新一个值,然后更新另一个值,因此违反了约束。难道不应该在事务中同时更新它们,然后在整理出值且不违反约束后尝试提交吗?有没有不使用临时值的方法解决这个问题? 最佳答案 这不是EF的问题,而是SQL数据库的问题,因为update命令是顺序执行的。事务与此无关——所有约束都是按命令而不是按事务验证的。如果您想交换唯一值,您需要更

c# - 有没有办法将 ConcurrentDictionary.TryUpdate 与 lambda 表达式一起使用?

我有一个简单的场景,我想更新现有项目的值。只有AddOrUpdate方法提供了一个委托(delegate),我可以在其中更新旧值。但是,如果key不存在,我不想添加任何内容。还有TryUpdate方法没有重载,我可以获得旧值。有没有办法用当前的API来做到这一点?这是我要找的签名:boolTryUpdate(TKeykey,FuncupdateValueFactory) 最佳答案 您必须准备好循环并可能多次调用Func(与使用一个的GetOrAdd重载相同)。这意味着如果Func有副作用,从外部看它不会是原子的。确实,Func不应该

c# - c# 表达式中的闭包变量捕获问题

我有一个使用表达式树创建委托(delegate)的函数。在此表达式中,我使用从传递给函数的多个参数捕获的变量。实际的表达式树相当大,举个例子:DelegateGenerateFunction(Tcurrent,IListparents){varcurrentExpr=Expression.Parameter(typeof(T),"current");varparentsExpr=Expression.Parameter(parents.getType(),"parents");varparameters=newList();....returnExpression.Lambda(Exp

c# - EF lambda : The Include path expression must refer to a navigation property

这个问题在这里已经有了答案:EF:Includewithwhereclause[duplicate](5个答案)关闭5年前。这是我的表达:Coursecourse=db.Courses.Include(i=>i.Modules.Where(m=>m.IsDeleted==false).Select(s=>s.Chapters.Where(c=>c.IsDeleted==false))).Include(i=>i.Lab).Single(x=>x.Id==id);我知道原因是模块部分的Where(m=>m.IsDeleted==false),但为什么会导致错误?更重要的是,我该如何修复它

c# - 为什么在没有 new() 泛型类型约束的情况下允许 Activator.CreateInstance<T>() ?

在下面显示的示例代码中,“CompileError”方法不会编译,因为它需要whereT:new()CreateWithNew()中所示的约束方法。然而,CreateWithActivator()方法在没有约束的情况下编译得很好。publicclassGenericTests{publicTCompileError()//compileerrorCS0304{returnnewT();}publicTCreateWithNew()whereT:new()//buildsok{returnnewT();}publicTCreateWithActivator()//buildsok{ret

c# - 在 NUnit 2.5 中使用 Lambda 作为约束?

根据CharliePoole'sNUnitblog,在NUnit2.5中可以使用Lambda表达式作为约束。我似乎无法让它工作?我正在使用NUnit2.5.3.9345。使用博文中的示例lambda:[TestFixture]publicclassClass1{[Test]publicvoidsomeTest(){int[]array={1,2,3,4};Assert.That(array,Is.All.Matches((x)=>x%4==0&&x%100!=0||x%400==0));}}编译器的结果是:“无法将lambda表达式转换为类型‘NUnit.Framework.Const

c# - ASP.NET MVC 2 中具有约束的可选路由参数?

如果我有这样一条路线:routes.Add(newRoute("{controller}/{page}",newRouteValueDictionary{{"page",UrlParameter.Optional}},newRouteValueDictionary{{"page",@"[Pp]age\d+"}},newMvcRouteHandler()));然后当{page}丢失时路由不匹配,但是如果我删除约束它匹配。这是错误还是功能? 最佳答案 我在正则表达式中使用^$|,例如:(^$|[Pp]age\d+)。我在搜索此问题的答案

c# - 将 List.FindAll() 与 lambda 一起使用的 VB.NET 语法是什么?

在C#中,我一直在通用列表中执行FindAll,如下所示:Listtlist=list.FindAll(p=>p.parid==titem.catid);两个问题,这是执行此类操作的合适方式吗?我如何将其转换为VB.Net 最佳答案 首先,是的,这是执行此操作的适当方法,其次:DimtlistAsList(Ofgroup.category)_=list.FindAll(Function(p)p.parid=titem.catid) 关于c#-将List.FindAll()与lambda一

c# - 有人可以解释这个 C# lambda 语法吗?

我最近发现一个静态方法声明为:publicclassFoo{publicstaticFuncRender=(a,b)=>{a.RenderPartial(b);return"";};}Intellisense建议用法是(例如):strings=Foo.Render(htmlHelper,propertyViewModel);那么下面的内容似乎是等价的:publicstaticstringRender(HtmlHelpera,PropertyViewModelb){a.RenderPartial(b);return"";}A)第一个样式的名称是什么?我意识到它正在使用lambda;是=标